package org.lestr.secuel.noyau.systemeLogique.conditions;

import org.jdom.Element;

import org.lestr.secuel.m3ds.objets3D.Objet3D;
import org.lestr.secuel.m3ds.objets3D.Objet3DCollisionEcouteur;

public class ConditionCollisionAuMonde extends ConditionAbstraite implements Objet3DCollisionEcouteur {

	
	// Définition de constantes
	private static final long serialVersionUID = 1L;

	
	// Déclaration des attributs
	private Objet3D objet;
	
	
	/** Constructeur */
	public ConditionCollisionAuMonde(){
	
		// Instanciation des attributs
		objet = null;
		
		// Défini le nom de la collision
		setTypeNom("Collision au monde");
		
	}// FIN Constructeur
	
	
	/** Défini l'objet */
	public void defObjet(Objet3D objet){
	
		// Supprime les écouteurs sur l'ancien
		if(this.objet != null)
			this.objet.retraitCollisionEcouteur(this);
		
		// Mémorise
		this.objet = objet;
		
		// Ajoute un écouteur de collsion à l'objet
		objet.ajoutCollisionEcouteur(this);
		
	}// FIN defObjet
	
	
	/** Retourne l'objet */
	public Objet3D retObjet(){
		
		return objet;
		
	}// FIN retObjet

	
	/** Signal un début de collision entre deux objets */
	public void débutCollision(Objet3D origine, Objet3D étranger){
		
		// Si les objet sont les bons
		if(objet == origine || objet == étranger){
			
			vraie();
			
		}
		
	}// FIN débutCollision

	
	/** Signal une fin de collision entre deux objets */
	public void finCollision(Objet3D origine, Objet3D étranger){
		
		// Si les objets sont les bons
		if(objet == origine || objet == étranger){
			
			fausse();
			
		}
		
	}// FIN finCollision


	@Override
	public void charger(Element xml) {
		// TODO Auto-generated method stub
		
	}


	@Override
	public Element compiler() {
		// TODO Auto-generated method stub
		return null;
	}
	
	
}// FIN Classe
